package br.com.pguide.activity;

import java.util.ArrayList;

import br.com.pguide.R;
import br.com.pguide.estrutura.Item;
import br.com.pguide.parser.Parser;
import br.com.pguide.utils.Mensagem;
import br.com.pguide.webservice.WebService;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.text.InputType;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.AdapterView.OnItemClickListener;

public class AdicionarItemActivity extends Activity {

	String nome_busca, username;
	EditText campo_busca, qtd;
	ListView lv;
	ArrayList<Item> arraylist_itens;
	int position;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		arraylist_itens = new ArrayList<Item>();
		Intent it = getIntent();
		nome_busca = it.getStringExtra("nome_busca");
		username = it.getStringExtra("username");
		setContent();
		buscar(null);
	}
	
	private void setContent() {
		setContentView(R.layout.resultados_busca_produto);
		
		campo_busca = (EditText) findViewById(R.id.campo_pesquisa);
		campo_busca.setText(nome_busca);
	}
	
	public void buscar(View view) {
		nome_busca = campo_busca.getText().toString();
		
		String resultados = WebService.pesquisar(username, nome_busca);
		arraylist_itens = Parser.busca_por_item(resultados);

		String[] array = new String[arraylist_itens.size()];
		for (int i=0; i<arraylist_itens.size(); i++){
			arraylist_itens.get(i).setCategoria(arraylist_itens.get(i).getCategoria());
			arraylist_itens.get(i).setUnidade_de_medida(arraylist_itens.get(i).getUnidade_de_medida());
			array[i] = arraylist_itens.get(i).getNome().toString() + " (" + 
					   arraylist_itens.get(i).getTamanho().toString() + " " + 
					   arraylist_itens.get(i).getUnidade_de_medidaStr(Parser.lista_unidades_de_medida(WebService.get_unidades_de_medida())) + ")\n" +
					   arraylist_itens.get(i).getMarca().toString() + "\n" +
					   arraylist_itens.get(i).getCategoriaStr(Parser.lista_categorias(WebService.get_categorias()));
		}
		preencher_lista(array);
	}
	
	public void preencher_lista(String[] array){
		lv = (ListView) findViewById(R.id.lista_resultados);
		
		lv.setOnItemClickListener(new OnItemClickListener() {
			public void onItemClick(AdapterView<?> adapter, View view, int position,
					long arg) {
				onItemListClick(position);
			}
		});
		
		ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
				android.R.layout.simple_list_item_1, android.R.id.text1, array);
		
		lv.setAdapter(adapter);
	}
	
	public void onItemListClick(int position) {
		this.position = position;
		String message = getString(R.string.detalhes_do_item) + ": \n\n" + 
						 getString(R.string.nome) + ": " + arraylist_itens.get(position).getNome().toString() + "\n" +
						 getString(R.string.marca) + ": " + arraylist_itens.get(position).getMarca().toString() + "\n" + 
						 getString(R.string.categoria) + ": " + arraylist_itens.get(position).getCategoriaStr(Parser.lista_categorias(WebService.get_categorias())) + "\n" +
						 getString(R.string.tamanho) + ": " + arraylist_itens.get(position).getTamanho().toString() + " " + 
						 									  arraylist_itens.get(position).getUnidade_de_medidaStr(Parser.lista_unidades_de_medida(WebService.get_unidades_de_medida())) + "\n" +
						 getString(R.string.barcode) + ": " + arraylist_itens.get(position).getCodigo().toString() + "\n\n" +
						 getString(R.string.adicionar_qual_quantidade);
		
		AlertDialog.Builder alertbox = new AlertDialog.Builder(this);
		alertbox.setTitle(R.string.adicionar_a_lista);
		alertbox.setMessage(message);
		qtd = new EditText(this);
		qtd.setInputType(InputType.TYPE_CLASS_NUMBER);
		alertbox.setView(qtd);
		alertbox.setPositiveButton(R.string.adicionar, new OnClickListener() {
			public void onClick(DialogInterface dialog, int which) {
				adicionar();
			}
		});
		alertbox.setNegativeButton(R.string.fechar, null);
		alertbox.show();
	}
	
	public void adicionar(){
		String retorno = "";
		try {
			retorno = WebService.adicionar_item_na_lista( username, 
					Parser.get_item_id(WebService.get_item_id(username, arraylist_itens.get(position).getCodigo().toString())),
					Float.parseFloat(qtd.getText().toString()),
					1);
		} catch (Exception e) {
			Mensagem.exibirMensagem(e.getMessage(), this);
		}
		if (retorno.equals("ok")) {
			Mensagem.exibirToastCurto("adicionado à lista........", this);
			finish();
		} else {
			Mensagem.exibirToastCurto("erro ao adicionar à lista........: " + retorno.toString(), this);
		}
	}
	
	public void voltar(View view) {
		finish();
	}
}
